草庐IT

php - 为什么 Magento 有 _construct 和 __construct 方法?

全部标签

ruby - 在 Vim 中使用 Ctags 跳转到 Ruby bang 方法

我在使用ExhuberantCtags跳转到Rubybang方法时遇到问题。我已经搜索过其他有类似问题的人,但找不到任何东西。可以使用以下小型Rub​​y类显示该问题的示例:classHellodefstartmethod!enddefmethod#Blahenddefmethod!#Blahendend当ctags-R.在此文件上运行时,生成的tags文件包含以下两行,表明这两种方法都是在生成时发现的:methodtest.rb/^defmethod$/;"fclass:Hellomethod!test.rb/^defmethod!$/;"fclass:Hello但是,如果我将光标放

ruby-on-rails - 使用 Rails 编写 RSpec 测试时,spec/requests 文件夹和 spec/controllers 应该放什么?

我对Rails还很陌生,并试图通过从一开始就实现测试来以“正确”的方式做事。昨天我使用脚手架生成器创建了我的第一个模型/View/Controller配置。虽然有人告诉我您真的不应该使用脚手架,但它很有用,因为我可以了解Rails代码的结构。我注意到的一件事是,自动生成的RSpec大部分放在spec/controllers文件夹中。然而当我看到thisepisodeofRailscasts,我注意到他用了railsgenerateintegration_test[test_name]将单个测试文件放入spec/requests文件夹的命令。然而,他编写的所有测试都与Controller

ruby - 如何为类方法动态定义别名方法?

我有一个名为“计算器”的模块,我想将其包含在“产品”类中。Calculator将扩展“Product”,它将类方法复制到Product上。这些类方法之一是“memoize”。我的想法是我可以做这样的事情:moduleCalculatordefself.extended(base)base.memoize:foo_barendend以内存方法(特别是类方法)为目的:foo_bar。在memoize内部,我调用方法“alias_method”,它试图将类方法别名为不同的名称(此处为:foo_bar)。这失败了。Memoize看起来像这样:moduleCalculator(theextend

ruby - 为什么我会看到这两个几乎相同的 Ruby 正则表达式模式的不同结果,为什么一个匹配我认为不应该匹配的内容?

使用Ruby1.9.2,我在IRB中有以下Ruby代码:>r1=/^(?=.*[\d])(?=.*[\W]).{8,20}$/i>r2=/^(?=.*\d)(?=.*\W).{8,20}$/i>a=["password","1password","password1","pass1word","password1"]>a.each{|p|puts"r1:#{r1.match(p)?"+":"-"}\"#{p}\"".ljust(25)+"r2:#{r2.match(p)?"+":"-"}\"#{p}\""}这会产生以下输出:r1:-"password"r2:-"password"r1:

ruby - 为什么 split (' ' ) 试图变得(太)聪明?

我刚刚发现String#split有以下奇怪的行为:"a\tbc\nd".split=>["a","b","c","d"]"a\tbc\nd".split('')=>["a","b","c","d"]"a\tbc\nd".split(//)=>["a\tb","c\nd"]Thesource(来自2.0.0的string.c)超过200行,包含这样一段话:/*L5909*/elseif(rb_enc_asciicompat(enc2)==1){if(RSTRING_LEN(spat)==1&&RSTRING_PTR(spat)[0]==''){split_type=awk;}}后来,在

ruby - Ruby 的排序方法如何与组合比较(宇宙飞船)运算符一起工作?

这里是初级程序员,只是想了解Ruby背后的过程sort使用飞船操作符时的方法.希望有人能帮忙。在以下内容中:array=[1,2,3]array.sort{|a,b|ab}...我明白sort一次比较一对数字,然后返回-1如果a属于b之前,0如果它们相等,或者1如果a应该遵循b.但是在降序排序的情况下,像这样:array.sort{|a,b|ba}...到底发生了什么?是否sort还是比较ab然后翻转结果?或者它是在解释return的-1,0和1具有相反的行为?换句话说,为什么要像这样将变量放在block中:array.sort{|b,a|ba}...结果与第一个示例中的排序模式相同?

ruby - Square 和 Rectangle 继承有什么问题?

我读过一些关于将Square作为Rectangle类的继承类的做法的文章,说它违反了LSP(Liskov替换原则)。我还是不明白,我用Ruby做了一个示例代码:classRectangleattr_accessor:width,:heightdefinitialize(width,height)@width=width@height=heightendendclassSquare谁能告诉我这是怎么回事? 最佳答案 我并不总是热衷于Liskov,因为它似乎限制了您可以基于行为而不是“本质”进行继承。在我看来,继承始终是一种“是一种”关

ruby - Ruby 中 Enumerator 类的用途是什么

如果我像这样创建一个枚举器:enum=[1,2,3].each=>#enum是枚举器。这个对象的目的是什么?我不能这样说:enum{|i|putsi}但我可以这样说:enum.each{|i|putsi}这似乎是多余的,因为Enumerator是用.each创建的。它似乎正在存储一些关于each方法的数据。我不明白这是怎么回事。我确信我们有这个Enumerator类是有一些合乎逻辑的原因的,但是它能做什么而Array不能呢?我想也许它是Array和其他Enumerable的祖先,但它似乎不是。Enumerator类存在的确切原因是什么?它会在什么情况下使用?

ruby 2.0 未定义方法 ObjectSpace.trace_object_allocations

在ruby​​2.0.0/247或head上试过这个:require'objspace'ObjectSpace.trace_object_allocations->undefinedmethod`trace_object_allocations'forObjectSpace:Module文档说它应该可以工作http://www.ruby-doc.org/stdlib-2.0/libdoc/objspace/rdoc/ObjectSpace.html知道我错过了什么吗? 最佳答案 对于更高的ruby​​版本,您仍然可能会遇到如下错误:

ruby - 为什么 rvm install 2.0.0 要求输入 sudo 密码?

我正在尝试通过rvm安装ruby​​2.0.0-p247。但是,它要求输入密码。提供sudo密码正常吗?我没有在sudoers文件中配置sudo密码。我正在使用OracleEnterpriseLinux6x64。 最佳答案 sudo用于autolibs-这意味着RVM将安装所需的软件,如openssh或libyaml,这是标准ruby​​正常工作所必需的。您可以更改autolibs以查看所需的包而不是安装它们:rvmautolibsread-fail并恢复到安装要求的默认设置:rvmautolibsreset